<?php

/**
 * コントローラ基底クラス
 *
 * @package Apm
 * @subpackage Controller
 * @abstract
 * @author hiasa-ryousuke@systemsoft.co.jp
 * @since 2010/10/20
 */
abstract class Apm_Controller_Base extends Zend_Controller_Action
{

    /**
     * モデルのインスタンス
     *
     * @var object
     */
    protected $_model = null;

    /**
     * 出力の切り替え（html, json, xml, cmsapi）
     *
     * @var string
     */
    protected $_mode = 'cmsapi';

    //CMSURL
    protected  $cmsurl = 'http://172.29.10.51/';

    /**
     * リクエストパラメータ
     *
     * @var array
     */
    protected $_params = array();

    /**
     * データ
     *
     * @var array
     */
    protected $_data = array();

    /**
     * footer のデータ
     *
     * @var array
     */
    protected $_footer_data = array();

    /**
     * APIのデータ
     *
     * @var array
     */
    protected $_api_data = array();

    /**
     * CMS連携プロパティ
     *
     * @var array
     */
    protected $_property = array();

    /**
     * レジストリのconfigを格納
     *
     * @var string
     */
    protected $_config = null;

    /**
     * パンくずのインスタンス
     *
     * @var string
     */
    protected $_breadcrumb = null;

    /**
     * プレースホルダを除去(店舗詳細OEM対応)
     *
     * @var bool
     */
    protected $_remove_place_folder = false;

    /**
     * グローバルナビからの遷移の場合
     */
    private $_is_global_navi = true;

    /**
     * Google Analyticsタグの表示フラグ
     *
     * @var string
     */
    private $_show_googleanalytics = true;

    /**
     * titleを持ち回る配列
     *
     * @var array
     */
    private $_title_array = array();

    /**
     * descriptionを持ち回る配列
     *
     * @var array
     */
    private $_description_array = array();

    /**
     * keywordを持ち回る配列
     *
     * @var array
     */
    private $_keywords_array = array();

    /**
     * metaを持ち回る配列
     *
     * @var array
     */
    private $_meta_array = array();

    /**
     * 404ヘッダー出力
     *
     * @var bool
     */
    protected $_404_header = false;

    /**
     * SEOsearchブロック追加
     *
     * @var bool
     */
    protected $_import_seo_search = false;

    /**
     * リクエストURI
     *
     * @var bool
     */
    protected $_request_uri = null;

    /**
     * メインテンプレート
     *
     * @var srting
     */
    protected $_main_template = '';

    /**
     * リクエストが呼ばれたときに、自動実行されるメソッド
     * CMS連携の為のURL設定と、モデル名の名前解決を行う
     *
     * @return void
     */
    final public function init()
    {
        // 実行速度計測開始
        __benchmark_start();

        // __log_debug(__FILE__, __LINE__, __METHOD__, '---------->>>');
        __log_request_headers();
        __log_response_headers();

        __log_debug_ex("############### start --- Module = '{$this->getRequest()->getModuleName()}' Controller = '{$this->getRequest()->getControllerName()}' Action = '{$this->getRequest()->getActionName()}' ###############");

        $this->_is_global_navi = ($this->getRequest()->getParam('isGlobalNavi') == 1) ? true : false;

        $this->setMode();

        $this->setApmValueByConfigInfo();

        $this->setConfig();

        $this->setAutoloder();

        $this->setPropertyDefault();

        $this->_breadcrumb = new Apm_Breadcrumb();

        $this->setRequestUri();

        // __log_debug(__FILE__, __LINE__, __METHOD__, '----------<<<');
    }

    protected function setXPassThroutgh()
    {
        $this->_mode = 'html';
    }

    /**
     * 出力形式をセット
     *
     * @return void
     */
    private function setMode()
    {
        $isMobile = $this->getRequest()->getParam('isMobile');
        $mode = $this->getRequest()->getParam('mode');
        if (! empty($isMobile) && $isMobile == 1) {
            $this->_mode = (! empty($mode)) ? $mode : 'xml';
        }
        if ($mode == 'cmsapi') {
            $this->_mode = 'cmsapi';
        }
    }

    /**
     * テンプレートにURLの環境変数をセット
     *
     * @return void
     */
    private function setApmValueByConfigInfo()
    {
        // __log_debug(__FILE__, __LINE__, __METHOD__, '---------->>>');
        $configObject = Zend_Registry::get('config');
        $config = $configObject->apm->toArray();
        // __log_debug_array(__FILE__, __LINE__, __METHOD__, $config);
        $this->view->apm = $config;

        // __log_debug(__FILE__, __LINE__, __METHOD__, '----------<<<');
    }

    /**
     * 環境変数をセット
     *
     * @return void
     */
    private function setConfig()
    {
        // __log_debug(__FILE__, __LINE__, __METHOD__, '---------->>>');
        $configObject = Zend_Registry::get('config');
        $config = $configObject->toArray();
        $this->_config = $config;

        // __log_debug(__FILE__, __LINE__, __METHOD__, '----------<<<');
    }

    /**
     * モデルの名前解決
     *
     * @return void
     */
    private function setAutoloder()
    {
        $req = $this->getRequest();
        $moduleName = $req->getModuleName();
        $moduleNameCapital = ucwords($moduleName);
        $autoLoader = Zend_Loader_Autoloader::getInstance();
        $autoLoader->setFallbackAutoloader(true);
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => $moduleNameCapital,
            'basePath' => APPLICATION_PATH . '/modules/' . $moduleName,
            'resourceTypes' => array(
                'model' => array(
                    'namespace' => 'Model',
                    'path' => 'models'
                )
            )
        ));
    }

    /**
     * リクエストURI格納
     *
     * @return void
     */
    private function setRequestUri()
    {
        $url = $_SERVER['REQUEST_URI'];
        if (preg_match('/^\/asn\/1\/contents\/(.*)$/', $url)) {
            $url = str_replace('/asn/1/contents/', '/', $url);
        }
        $this->_request_uri = $url;
    }

    /**
     * メインテンプレートセット
     *
     * @return void
     */
    protected function setMainTemplate($template)
    {
        $this->_main_template = $template;
    }

    /**
     * リクエストパラメータを1つの配列に格納する
     *
     * @return 連想配列
     */
    protected function getParameters()
    {
        // __log_debug(__FILE__, __LINE__, __METHOD__, '---------->>>');

        // 物件詳細kodawariData処理変更
        $p = $this->getRequest()->get('parameters');
        if (empty($p)) {
            $p = array();
        }
        $params = array_merge($_POST, $_GET, $p);
        if (! empty($params)) {
            $params = Apm_Util::decodeValue($params);
            // 2015/02/17 UTF-8へ変換するように修正
//             $params = Apm_Util::convertUtf8ToSjis($params);
            $params = Apm_Util::mbConvertEncodingArray($params, Apm_Config_Common::PHP_CHAR_SET);
        }

        // __log_debug_array(__FILE__, __LINE__, __METHOD__, $params);
        // __log_debug(__FILE__, __LINE__, __METHOD__, '----------<<<');
        return $params;
    }

    /**
     * セッションオブジェクトを取得する
     *
     * @return 連想配列
     */
    protected function getSessionParameters()
    {
        $session = Zend_Registry::get('apm_session');
        return $session;
    }

    /**
     * Google Analyticsタグをメタタグに追加
     *
     * @return void
     */
    private function addMetaGoogleAnalytics()
    {
        $file = file(dirname(APPLICATION_PATH) . DIRECTORY_SEPARATOR . 'library/Apm/Controller/google_analytics_tag.inc');
        $tmp = '';
        foreach ($file as $buf) {
            $tmp .= $buf;
        }
        $this->_meta_array[] = $tmp;
    }

    /**
     * テンプレートへの最終出力を制御する
     *
     * @param string $template_file_path
     *            テンプレートファイルへの絶対パス、デフォルトはZend Framewordの仕様通りのパスとなる
     * @return void
     */
    protected function display($template_file_path = '', $header = '', $footer = '', $topbar = '')
    {
        // __log_debug(__FILE__, __LINE__, __METHOD__, '---------->>>');
        __benchmark_ex_start();

        if (empty($template_file_path)) {
            if (__is_cmsapi()) {
                $module = __get_cmsapi_module();
                $controller = __get_cmsapi_controller();
            } else {
                $router = new Zend_Controller_Router_Rewrite();
                $req = $router->route(new Zend_Controller_Request_Http());
                $module = $req->getModuleName();
                $controller = $req->getControllerName();
            }
            $template_file_path = __get_default_template_file_path($module, $controller);
        }
        if ($this->_show_googleanalytics) {
            $this->addMetaGoogleAnalytics();
        }
        $this->_property['title'] = implode('', $this->_title_array);
        $this->_property['description'] = implode('', $this->_description_array);
        $this->_property['keywords'] = implode(',', $this->_keywords_array);
        $this->_property['meta'] = implode("\n", $this->_meta_array);

        // 2015/02/18 html用のcharsetを設定
        $this->_property['meta_charset'] = Apm_Config_Common::HTML_CHAR_SET;
        $this->_data['meta_charset'] = Apm_Config_Common::HTML_CHAR_SET;

        __log_debug(__FILE__, __LINE__, __METHOD__, 'template_file_path = ' . $template_file_path);

        if (ereg('^/sp/', $this->_request_uri)) {
            $this->_mode = 'sp';
        }

        switch ($this->_mode) {
            case 'json':
                Apm_Util::outputXPassThroutgh();
                Apm_Util::outputJsonData_ToAjaxCharSet($this->_api_data);
                break;
            case 'xml':
                Apm_Util::outputXPassThroutgh();
                Apm_Util::outputXmlHttpHeader();
                Apm_Util::outputXmlData($this->_api_data);
                break;
            case 'sp':
                Apm_Util::outputXPassThroutgh();
                $smarty = __get_apm_smarty_object();
                $smarty->assign($this->_data);
                echo $smarty->fetch($template_file_path);
                break;
            default:
                foreach ($this->_data as $key => $value) {
                    $this->view->$key = $value;
                }
                $html = $this->view->render($template_file_path);
                if ($this->_mode == 'cmsapi') {
                    // 2011/07/19 キャンペーンサイト用設定 H.Imamura
                    if (APPLICATION_ENV == 'campaign' || APPLICATION_ENV == 'campaign_stage' || APPLICATION_ENV == 'campaign_development') {
                        if ($this->_404_header) {
                            header("HTTP/1.1 404 Not Found");
                        }
                        $smarty = __get_apm_smarty_object();
                        $smarty->assign('contents', $this->view->render($template_file_path));
                        $smarty->assign($this->_property);
                        $cms_template_path = '';
                        $cms_template_path .= dirname(APPLICATION_PATH);
                        $cms_template_path .= DIRECTORY_SEPARATOR;
                        $cms_template_path .= 'public_camp';
                        $cms_template_path .= DIRECTORY_SEPARATOR;
                        $cms_template_path .= 'cms.tpl';
                        echo $smarty->fetch($cms_template_path);
                    } else {
                        // * 2012/11 リニューアル対応 -start- *
                        // 旧テンプレート用にjquery追加
                        if (Apm_Config_Search::RENEW_2012) {
                            $import_js = false;
                            $import_css = false;
                            foreach ($this->_meta_array as $str) {
                                if (preg_match('/\/common_new\/js\/import(.*)\.js/', $str) === 1) {
                                    $import_js = true;
                                }
                                if (preg_match('/\/common_new\/css\/sub(.*)\.css/', $str) === 1) {
                                    $import_css = true;
                                }
                            }
                            // if (!$import_css && $this->_import_seo_search) {
                            // $add_css = '<link rel="stylesheet" type="text/css" href="/common_new/css/sub02.css" media="all" />'."\n";
                            // $this->_property['meta'] = $add_css . $this->_property['meta'];
                            // }
                            if (! $import_js) {
                                $add_js = '<script type="text/javascript" src="/js/common/jquery-1.4.2.min.js"></script>' . "\n";
                                $this->_property['meta'] = $add_js . $this->_property['meta'];
                            }
                            // SEOブロック追加 -> 各テンプレートで挿入
                            // if ($this->_import_seo_search) {
                            // $seo_html = $this->view->render(APPLICATION_PATH . '/modules/common/views/scripts/seo_search.tpl');
                            // $html .= $seo_html;
                            // }
                        }
                        // * 2012/11 リニューアル対応 -end- *
                        if (APPLICATION_ENV !== 'dummy') {
                            Apm_Util::outputXPassThroutgh();
                            $this->_property['data'] = $this->_data;
                            // 2012/06/15 Update H.Imamura 404ヘッダー対応
                            if ($this->_404_header) {
                                header("HTTP/1.1 404 Not Found");
                                $html = $this->_property['meta'] . $html;
                                $this->_property['title'] = '賃貸・賃貸物件の総合情報サイト | アパマンショップ';
                                $this->_property['description'] = '';
                                $this->_property['keywords'] = '';
                                $this->_property['meta'] = '';
                                $this->_property['anchorLink'] = '';
                            }

                            $smarty = __get_apm_smarty_object();

                            if (isset($header)) {
                                $smarty->assign('header_appends', $smarty->fetch($header));
                            }
                            if (isset($footer)) {
                                $smarty->assign($this->_footer_data);
                                $smarty->assign('footer_appends', $smarty->fetch($footer));
                                $smarty->clear_assign(key($this->_footer_data));
                            }

                            $cms_template_dir = dirname(APPLICATION_PATH);
                            $cms_template_dir .= DIRECTORY_SEPARATOR;
                            $cms_template_dir .= 'public';
                            $cms_template_dir .= DIRECTORY_SEPARATOR;

                            if (isset($topbar)) {
                                $topbar_path = $cms_template_dir . $topbar . '.tpl';
                                $smarty->assign('topbar', $smarty->fetch($topbar_path));
                            }

                            $smarty->assign('contents', $html);
                            $smarty->assign($this->_property);
                            if ($this->_main_template != '') {
                                $cms_template_path = $cms_template_dir . $this->_main_template;
                            } else {
                                $cms_template_path = $cms_template_dir . 'cms_new.tpl';
                            }

                            echo $smarty->fetch($cms_template_path);
                        } else {
                            // 2012/06/15 Update H.Imamura 404ヘッダー対応
                            if ($this->_404_header) {
                                Apm_Util::outputXmlHttpHeader404();
                                Apm_Util::outputCMSData404($html, $this->_property);
                            } else {
                                Apm_Util::outputXmlHttpHeader();
                                Apm_Util::outputCMSData($html, $this->_property);
                            }
                        }
                    }
                } else {
                    Apm_Util::outputXPassThroutgh();
                    if ($this->_remove_place_folder) {
                        echo Apm_Util::removePlaceFolder($this->view->render($template_file_path));
                    } else {
                        echo $this->view->render($template_file_path);
                    }
                }
                break;
        }
        // 実行時間計測終了
        __benchmark_end();
        __benchmark_ex_end();
        __log_debug(__FILE__, __LINE__, __METHOD__, "******************** 実行時間: " . __get_benchmark() . "********************");
        __log_debug_ex("display --- 実行時間: " . round((float) __get_benchmark_ex(), 5) . " 秒");
        __log_debug_ex("total --- 実行時間: " . round((float) __get_benchmark(), 5) . " 秒");
        __log_debug_ex("############### end --- Module = '{$this->getRequest()->getModuleName()}' Controller = '{$this->getRequest()->getControllerName()}' Action = '{$this->getRequest()->getActionName()}' ###############");
        // __log_debug(__FILE__, __LINE__, __METHOD__, '----------<<<');
        exit();
    }

    /**
     * エラー出力を行う
     *
     * @param array $param
     * @return void
     */
    protected function raiseError($param)
    {
        // __log_debug(__FILE__, __LINE__, __METHOD__, '---------->>>');
        throw new Exception($param);
        // __log_debug(__FILE__, __LINE__, __METHOD__, '----------<<<');
    }

    /**
     * ヘルパーのインスタンスを返す
     *
     * @param
     *            input_path: ヘルパーテンプレートのパス(絶対パス、またはファイル名(標準構成のみ))
     *            @reutrn object
     */
    public function getApmHelper($input_path)
    {
        // __log_debug(__FILE__, __LINE__, __METHOD__, '---------->>>');
        $tmp = debug_backtrace();
        $trace = array_shift($tmp);

        $helper_dir = '';
        $helper_dir .= dirname(dirname($trace['file']));
        $helper_dir .= DIRECTORY_SEPARATOR;
        $helper_dir .= 'views';
        $helper_dir .= DIRECTORY_SEPARATOR;
        $helper_dir .= 'helpers';
        if (file_exists($helper_dir . DIRECTORY_SEPARATOR . $input_path)) {
            $template_file_path = $helper_dir . DIRECTORY_SEPARATOR . $input_path;
        } else {
            $template_file_path = $input_path;
        }
        __log_debug(__FILE__, __LINE__, __METHOD__, "template_file_path = " . $template_file_path);
        $helper = new Apm_Helper_Base();
        $helper->setTemplateFilePath($template_file_path);
        // __log_debug(__FILE__, __LINE__, __METHOD__, '----------<<<');
        return $helper;
    }

    /**
     * グローバルナビからの遷移かどうかを返す
     *
     * @param
     *            void
     * @return
     *
     */
    protected function isGlobalNavi()
    {
        return $this->_is_global_navi;
    }

    /**
     *
     * 閲覧権限の判定を行なう
     *
     * @param
     *            void
     * @return void
     */
    protected function checkLogin()
    {
        if (! $this->isLogin()) {
            $this->getResponse()
                ->setHttpResponseCode(401)
                ->sendResponse();
            if (APPLICATION_ENV == 'development') {
                echo '権限がありません。';
            }
            exit();
        }
    }

    /**
     *
     * ログイン判定
     *
     * @return bool
     */
    protected function isLogin()
    {
        if (APPLICATION_ENV == 'development') {
            $session = $this->getSessionParameters();
            if (! empty($session->eID)) {
                return true;
            }
        } else {
            $allHeaderInfo = getallheaders();
            if (array_key_exists("Authorization", $allHeaderInfo)) {
                return true;
            }
        }
        return false;
    }

    /**
     * メールアドレスをCMSから取得する
     *
     * @return String(メールアドレス)
     */
    public function getCurrentUserEid()
    {
        if ($this->isLogin()) {
            if (APPLICATION_ENV == 'development') {
                $session = $this->getSessionParameters();
                return $session->eID;
            } else {
                $allHeaderInfo = getallheaders();
                $value = $allHeaderInfo["Authorization"];
                $getEMailArray = split('"', $value);
                $loginID = $getEMailArray[1];
                return $loginID;
            }
        }
        return "";
    }

    /**
     *
     * COOKIEを取得しセットする
     *
     * @return void
     */
    public function setCookies()
    {
        if (isset($_COOKIE)) {
            foreach ($_COOKIE as $key => $value) {
                setcookie($key, $value);
            }
        }
    }

    /**
     * プロパティのデフォルト値をセットする
     *
     * @return void
     */
    private function setPropertyDefault()
    {
        $this->setTitle(Apm_Config_Cms::PROPERTY_TITLE);
        $this->setDescription(Apm_Config_Cms::PROPERTY_DESCRIPTION);
        $this->setKeywords(Apm_Config_Cms::PROPERTY_KEYWORDS);
    }

    /**
     * プロパティに値をセットする(タイトル)
     *
     * @param
     *            String
     * @return void
     */
    protected function setTitle($param)
    {
        $this->_title_array = array();
        $this->_title_array[] = $param;
    }

    /**
     * プロパティに値を追加する(タイトル)
     *
     * $unshift string 前に追加する文字列
     * $push string 後ろに追加する文字列
     *
     * @return void
     */
    protected function addTitle($unshift, $push)
    {
        if (! empty($unshift)) {
            array_unshift($this->_title_array, $unshift);
        }
        if (! empty($push)) {
            array_push($this->_title_array, $push);
        }
    }

    /**
     * プロパティに値をセットする(デスクリプション)
     *
     * @param
     *            String
     * @return void
     */
    protected function setDescription($param, $add = true)
    {
        $this->_description_array = array();
        if ($add) {
            $this->_description_array[] = $param . Apm_Config_Search::DESCRIPTION_ADDTAIL;
        } else {
            $this->_description_array[] = $param;
        }
    }

    /**
     * プロパティに値を追加する(デスクリプション)
     *
     * $unshift string 前に追加する文字列
     * $push string 後ろに追加する文字列
     *
     * @return void
     */
    protected function addDescription($unshift, $push)
    {
        if (! empty($unshift)) {
            array_unshift($this->_description_array, $unshift);
        }
        if (! empty($push)) {
            array_push($this->_description_array, $push);
        }
    }

    /**
     * プロパティに値をセットする(キーワード)
     *
     * @param
     *            String
     * @return void
     */
    protected function setKeywords($param)
    {
        $this->_keywords_array = array();
        $this->_keywords_array[] = $param;
    }

    /**
     * プロパティに値を追加する(タイトル)
     *
     * $unshift string 前に追加する文字列
     * $push string 後ろに追加する文字列
     *
     * @return void
     */
    protected function addKeywords($unshift, $push)
    {
        if (! empty($unshift)) {
            array_unshift($this->_keywords_array, $unshift);
        }
        if (! empty($push)) {
            array_push($this->_keywords_array, $push);
        }
    }

    /**
     * プロパティに値を追加する(メタタグ)
     *
     * $unshift string 前に追加する文字列
     * $push string 後ろに追加する文字列
     *
     * @return void
     */
    protected function addMeta($unshift, $push)
    {
        if (! empty($unshift)) {
            array_unshift($this->_meta_array, $unshift);
        }
        if (! empty($push)) {
            array_push($this->_meta_array, $push);
        }
    }

    /**
     * メタタグにjsファイル定義を追加する
     *
     * $filename string ファイルまでの相対パス
     * $push array 属性を変更する場合、連想配列で渡す
     *
     * @return void
     */
    protected function addMetaJs($filename, $property = "")
    {
        $tmp = '<script src="' . $filename . '" ';
        $p_array = array();
        $p_array[0] = 'type="text/javascript"';
        if (is_array($property)) {
            foreach ($property as $k => $v) {
                if ($k == 'type') {
                    $p_array[0] = sprintf('%s="%s"', $k, $v);
                    continue;
                }
                $p_array[] .= sprintf('%s="%s"', $k, $v);
            }
        }
        $tmp .= implode(' ', $p_array);
        $tmp .= '></script>';
        $this->_meta_array[] = $tmp;
    }

    /**
     * メタタグにcssファイル定義を追加する
     *
     * $filename string ファイルまでの相対パス
     * $push array 属性を変更する場合、連想配列で渡す
     *
     * @return void
     */
    protected function addMetaCss($filename, $property = "")
    {
        $tmp = '<link href="' . $filename . '" ';
        $p_array = array();
        $p_array[0] = 'type="text/css"';
        $p_array[1] = 'rel="stylesheet"';
        $p_array[2] = 'media="screen, projection, tv, print"';

        if (is_array($property)) {
            foreach ($property as $k => $v) {
                if ($k == 'type') {
                    $p_array[0] = sprintf('%s="%s"', $k, $v);
                    continue;
                } elseif ($k == 'rel') {
                    $p_array[1] = sprintf('%s="%s"', $k, $v);
                    continue;
                } elseif ($k == 'media') {
                    $p_array[2] = sprintf('%s="%s"', $k, $v);
                    continue;
                }
                $p_array[] .= sprintf('%s="%s"', $k, $v);
            }
        }
        $tmp .= implode(' ', $p_array);
        $tmp .= ' />';
        $this->_meta_array[] = $tmp;
    }

    /**
     * メタタグにcanonical定義を追加する
     *
     * $url string インデックスさせたいURL
     *
     * @return void
     */
    protected function addMetaCanonical($url)
    {
        $tmp = '<link rel="canonical" href="' . $url . '" />';
        $this->_meta_array[] = $tmp;
    }

    /**
     * プロパティに値をセットする(メタタグ)
     *
     * @param
     *            String
     * @return void
     */
    protected function setMeta($param)
    {
        $this->_meta_array = array();
        $this->_meta_array[] = $param;
    }

    /**
     * メタタグを取得する
     *
     * @return Array
     */
    protected function getMeta()
    {
        return $this->_meta_array;
    }

    /**
     * Google Analyticsタグを出力させない
     *
     * @return void
     */
    protected function unsetGoogleanalyticsTag()
    {
        $this->_show_googleanalytics = false;
    }

    /**
     * プロパティに値をセットする(アンカーリンク)
     *
     * @param
     *            String
     * @return void
     */
    protected function setAnchorLink($anchorLink = '')
    {
        $this->_property['anchorLink'] = $anchorLink;
    }

    /**
     * プロパティに値をセットする(アンカーリンク)
     *
     * @param
     *            String
     * @return void
     */
    protected function setAnchorLink2($anchorLink = '', $tag = false)
    {
        $link = $anchorLink;
        $a_tag_open = '';
        $a_tag_close = '';
        if (Apm_Config_Search::RENEW_2012) {
            $a_tag_open = '<div id="footerContents" class="t_r"><a href="#top">';
            $a_tag_close = '</a></div>';
        } else {
            $a_tag_open = '<p class="pagetop"><a href="javascript:backToTop()"><strong>';
            $a_tag_close = '</strong></a></p>';
        }
        if (empty($link)) {
            $link = $a_tag_open . 'ページのトップへ' . $a_tag_close;
        } else
            if (! $tag) {
                $link = $a_tag_open . $link . $a_tag_close;
            }
        $this->_property['anchorLink'] = $link;
    }

    /**
     * プロパティに値をセットする(パンくず)
     *
     * @param
     *            String
     * @return void
     */
    protected function setBreadCrumb($breadCrumb = '')
    {
        $breadCrumb = str_replace("<a", "<li><a", $breadCrumb);
        $breadCrumb = str_replace("</a>", "</a></li>", $breadCrumb);
        $breadCrumb = str_replace("<strong>", "<li><strong>", $breadCrumb);
        $breadCrumb = str_replace("</strong>", "</strong></li>", $breadCrumb);
        $this->_property['breadCrumb'] = $breadCrumb;
        // if(APPLICATION_ENV == 'development'){
        // $breadCrumb = str_replace("<a","<li><a",$breadCrumb);
        // if (Apm_Config_Search::RENEW_2012) {
        // $breadCrumb = str_replace("</a>","</a>&thinsp;&gt;&thinsp;</li>",$breadCrumb);
        // } else {
        // $breadCrumb = str_replace("</a>","</a></li>",$breadCrumb);
        // }
        // $this->_property['breadCrumb'] = $breadCrumb;
        // }else{
        // $this->_property['breadCrumb'] = $breadCrumb;
        // }
    }

    // 以下廃止予定のメソッド
    /**
     * 廃止予定
     *
     * @deprecated
     *
     */
    protected function dbGetList($sql, $params)
    {
        __log_deprecated_method(__FILE__, __LINE__, __METHOD__);
        $pdo = $this->getDbConnection();
        $db = $this->getDbConnection();
        $result = $db->query($sql, $params);
        $data = $result->fetchAll();
        $data = $this->mbConvertEncodingArray($data, 'SJIS', 'UTF-8');
        return $data;
    }

    // 以下 Apm_Utilに移動
    /**
     * Apm_Utilに移動
     *
     * @deprecated
     *
     */
    final protected function redirect($url, $params = array())
    {
        __log_deprecated_method(__FILE__, __LINE__, __METHOD__);
        Apm_Util::redirect($url, $params);
    }
}
?>
